<?xml version="1.1" encoding="UTF-8"?>
<databaseChangeLog
        xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="
        http://www.liquibase.org/xml/ns/dbchangelog
        http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.0.xsd">
    <changeSet author="Рустам" id="1674055321526-1">
        <preConditions onFail="MARK_RAN">
            <not>
                <tableExists tableName="audit"/>
            </not>
        </preConditions>
        <createTable remarks="аудит" tableName="audit">
            <column autoIncrement="true" name="id" remarks="технический идентификатор" type="BIGINT">
                <constraints nullable="false" primaryKey="true" primaryKeyName="audit_pkey"/>
            </column>
            <column name="entity_type" remarks="тип сущности" type="VARCHAR(40)">
                <constraints nullable="false"/>
            </column>
            <column name="operation_type" remarks="тип операции" type="VARCHAR(255)">
                <constraints nullable="false"/>
            </column>
            <column name="created_by" remarks="кто создал" type="VARCHAR(255)">
                <constraints nullable="false"/>
            </column>
            <column name="modified_by" remarks="кто изменил" type="VARCHAR(255)"/>
            <column name="created_at" remarks="когда создан" type="TIMESTAMP WITHOUT TIME ZONE">
                <constraints nullable="false"/>
            </column>
            <column name="modified_at" remarks="когда изменен" type="TIMESTAMP WITHOUT TIME ZONE"/>
            <column name="new_entity_json" remarks="json, заполняется при изменении" type="TEXT"/>
            <column name="entity_json" remarks="json, заполняется при измнении и при сохранении" type="TEXT">
                <constraints nullable="false"/>
            </column>
        </createTable>
    </changeSet>
    <changeSet author="Рустам" id="1674055321526-2">
        <preConditions onFail="MARK_RAN">
            <not>
                <tableExists tableName="users"/>
            </not>
        </preConditions>
        <createTable remarks="аутентифицированный пользователь" tableName="users">
            <column autoIncrement="true" name="id" remarks="технический идентификатор" type="BIGINT">
                <constraints nullable="false" primaryKey="true" primaryKeyName="users_pkey"/>
            </column>
            <column name="role" remarks="роль" type="VARCHAR(40)">
                <constraints nullable="false"/>
            </column>
            <column name="profile_id" remarks="технический идентификатор профиля" type="BIGINT">
                <constraints nullable="false"/>
            </column>
            <column name="password" remarks="пароль" type="VARCHAR(500)">
                <constraints nullable="false"/>
            </column>
        </createTable>
    </changeSet>
    <changeSet author="Рустам" id="1674055321526-3" failOnError="false">
        <addUniqueConstraint columnNames="password" constraintName="users_password_key" tableName="users"/>
    </changeSet>
</databaseChangeLog>